In the field of computers, there has been a long felt need to reduce the boot time of computers. In fact, waiting for a computer to boot is an irritating nuisance almost universally acknowledged by all computer users.
One reason for extended pre-boot runtimes are wasted processing cycles. Typically, during the pre-boot runtime the processor is executing in a single threaded environment. As such, the processor spends a considerable amount of time simply waiting or idle. For example, when initializing a keyboard controller, the processor sends instructions to the keyboard controller to commence its initialization and then “busy” waits for the keyboard controller to complete. As mentioned, the typical pre-boot environment is single threaded. Therefore, during this busy wait period the processor does not proceed to the next execution task, but rather, waits until the keyboard controller completes its initialization.
During the pre-boot runtime, the processor spends a considerable amount of time (e.g., 70%) busy waiting for any number of hardware devices, such as waiting for the hard disk drive to return requested data, waiting for input/output (“I/O”) ports, and the like. Furthermore, considerable time is lost busy waiting for user inputs (e.g., logon ID and password). All this busy waiting constitutes wasted processing power.